package com.wash.shoes.common.enums;

/**
 * 订单状态枚举类
 * <p>
 * 待入库---->清洗中---->清洗完成---->待质检---->质检完成---->待出库---->送鞋中--->完成
 *
 * @author wangxy
 * @date 2024/8/31 16:17
 */
public enum OrderStatusEnum {

    /* 支付 */
    PRE_PAY("PRE_PAY", -1, "待支付"),

    /* 取消 */
    CANCEL("CANCEL", 0, "取消"),

    /* 取鞋中 */
    PICK_UP_SHOES("PICK_UP_SHOES", 1, "取鞋中"),

    /* 待入库 */
    PENDING_STORAGE("PENDING_STORAGE", 2, "待入库"),

    /* 清洗中 */
    CLEANING_IN_PROCESS("CLEANING_IN_PROCESS", 3, "清洗中"),
    /**
     * 清洗完成--->待质检
     */
    WAIT_FOR_QUALITY("WAIT_FOR_QUALITY", 7, "待质检"),

    /* 待出库 */
    PENDING_OUTBOUND("PENDING_OUTBOUND", 4, "待出库"),

    /* 送鞋中 */
    SENDING_SHOES("SENDING_SHOES", 5, "送鞋中"),


    /* 已完成 */
    COMPLETED("COMPLETED", 6, "已完成"),
    ;


    /**
     * 订单状态构造方法
     *
     * @param code 场景编码
     * @param desc 场景描述
     */
    OrderStatusEnum(String code, Integer status, String desc) {
        this.code = code;
        this.status = status;
        this.desc = desc;
    }


    /**
     * 场景编码
     */
    private String code;

    /**
     * 场景描述
     */
    private Integer status;

    /**
     * 场景描述
     */
    private String desc;

    /**
     * Gets the value of code
     *
     * @return the value of code
     */
    public String getCode() {
        return code;
    }

    /**
     * Gets the value of desc
     *
     * @return the value of desc
     */
    public String getDesc() {
        return desc;
    }

    public Integer getStatus() {
        return status;
    }

    /**
     * 根据code获取枚举
     *
     * @param code 编码code
     * @return OrderStatusEnum
     */
    public static OrderStatusEnum getByCode(String code) {
        for (OrderStatusEnum orderStatus : values()) {
            if (orderStatus.getCode().equals(code)) {
                return orderStatus;
            }
        }
        return null;
    }
}
